Course Introduction

FIN4770:Programming for FinTech

Prof. Matthew G. Son

University of South Florida

Course Description

About this course

Learn the fundamental technology in FinTech

  • The programming paradaigm and language for Finance
  • Quantitative analysis

About this course

A “Programming” course

  • Fundamental concepts of programming
  • Understand computing logics
  • Emphasize on building practical skills
  • and good habits

A “Hands on” course

  • Lab sessions and exercises in the class
  • Financial problems in focus

About me

Matthew Son, Ph.D. in Finance

  • Office: BSN 3127

  • gson@usf.edu

  • R, Python, C/C++

  • Research area:

    • Machine learning / Big data in Finance
    • Market Microstructure, Asset Pricing
    • Derivatives, Fixed Income

About you

Please tell us about yourself briefly:

  • Your name, major
  • Your career experiences if any, background
  • Your interest / goal
  • Your programming skills

Technology

  • Throughout the course you’ll use and learn:

    • Unix shell (Bash), R programming language and its packages

    • Python by converting your knowledge

    • VScode IDE for main interface

    • Copilot coding agent tools for programming

Prerequisites

  • Basic knowledge in Finance

  • Excel & Financial calculator

  • General proficiency with computers

Structure of the class

  • A two-part structure: lectures (70%) and lab sessions (30%).

  • Lecture: the instructor will cover the concepts and demonstrate.

    • Students are encouraged to engage by copying, typing, and running code on their own.
  • Lab sessions:

    • Students will work on coding problems that are closely tied to the lecture topics.

Course Expectations

  • By the end of this course, you’ll have a solid foundation in programming that is applicable to financial world.

    • I aim to teach both fundamentals & applications
  • Regular practice, completing assignments, and active participation are key to your success.

  • Try to memorize by practicing.

  • I will providing support, guidance, and resources to facilitate your learning.

Coding questions

I prefer meeting in person for receiving questions. It is far more effective than email communication.

However, when asking in email, explain:

  • Where the error is coming from (the source)
  • What is the error message (the response)
  • What you have tried
  • Make reproducible example so that I can see the same problem

Computer & Software

  • The latest stable version of R, Unix Shell (Bash, Zsh, etc.), Python

  • VScode IDE

Grading

Grading Categories and Weights

Graded Items Percent of Final Grade
Participation 10%
Quizzes 20%
Assignments 15%
Midterm 25%
Final Exam 30%

Grading Scale

Grades will be curved with target average B~B+.

Grade Grade Percentage Grade Grade Percentage
A 94% - 100% C+ 77% - 79%
A- 90% - 93% C 74% - 76%
B+ 87% - 89% C- 70% - 73%
B 84% - 86% D+ 67% - 69%
B- 80% - 83% D 64% - 66%
D- 60% - 63%
F 0% - 59%

Quizzes

In-class short (20 min), closed book

  • Conceptual questions
  • Multiple-choice questions
  • True/False questions

Based on the previous lectures and lab problems.

Midterm / Final Exams

  • Basic conceptual questions
  • Coding problems with numerical answers
  • Multiple-choice questions
  • True/False questions

Based on the lectures, lab problems and homework assignments.

  • Closed book exam
  • A letter-size, single-sided (double-sided for final) cheat sheet allowed

Course Outlines

Course Modules

  • Module 1: Git/Github, Unix Shell

  • Module 2: R Programming

  • Module 3: Python & LLMs

Course Schedule

The course schedule is tentative and subject to change.

Week Topics Finance Applications
1~3 Unix Shell
  • Course Intro, Installation
  • Git/Github
  • Command line tools
  • File systems and Paths
  • Calling web APIs
4 ~ 14 R
  • Objects, Symbols, Values, Attributes

  • Object classes, vectors, lists, subsetting

  • Functions and loops

  • Pipe chaining

  • Control structure

  • Logical / Integer / Numerics

  • Date and Times

  • Characters and String manipulation

  • Regular expressions / Wordcloud

  • Data import and export

  • Data frames and manipulations

  • Visualizations

  • LLMs to Sentiment analysis

  • Cash flows
  • Time value of money
  • Free cash flow / ratio analysis
  • Bond pricing
  • Capital Asset Pricing Model
  • Portfolio analysis
  • Portfolio sorting
  • Textual analysis
  • Options pricing
  • Crypto analysis
15 Python & LLMs
  • Converting your R knowledge to Python
  • Prompt engineering
  • AI Code generation and translation
  • Debugging
Time permitting Special Topic
  • Virtual Environments
  • Object-oriented programming

Course Policy

Attendance

Attendance is required in all lecture and lab sections.

I will randomly check attendance during class for bonus points.

Academic Integrity and Honesty

Students are required to comply with the university policy on academic integrity found in USF Regulation 3.027.

Dishonesty will not be tolerated under any circumstances!

Use of AI Tools

  • Use AI as a supplemental resource (like an editor)
  • Must accompany deep understanding, not rely solely on AI
  • Responsible for accuracy of submissions

Strictly prohibited during exams/quizzes:

  • ChatGPT, Gemini, Claude, or any generative language models
  • AI-augmented coding tools (Copilot, etc.)
  • Violations subject to academic penalties per USF Regulation 3.027

During Class

  • Please limit computer usage to activities directly related to the class.

  • Phones are not permitted as they are unlikely to be useful for course-related activities.

  • While eating and drinking are allowed in class, please ensure that they do not disrupt the course.

Late submissions

  • Late submissions will not be graded unless:

    • if a valid excuse is communicated to the instructor before the deadline

    • valid excuses with proof will be accepted later, in extenuating circumstances

Missing exam, quiz

  • A valid excuse must be communicated to the instructor before the exam/quiz

  • There will be no make-up exams/quizzes

  • If you miss an exam or quiz due to documented extenuating circumstances, the weight will be redistributed proportionally to your remaining exams/quizzes in that category

Request for Re-evaluation

Students may request re-grading exams and assignments within one week (seven calendar days) after grading.

In the case of a regrading request after the final exam, all previous submissions for the course will be strictly and thoroughly reevaluated.

For more details:

Programming Languages

Learn Programming

When you learn a programming language, you actually learn two languages.

  • meta-programming language

    • jargons that are used in the programming in general
    • e.g., control structure, statements, comprehensions in CS
    • e.g., shape ratio, alpha, wacc in finance
  • programming language per se

    • Syntax and rules that is used in the specific language

Interpreted vs Compiled Language

  • Interpreted Language:
    • Code is executed line by line by an interpreter
    • Easier to test and debug
    • Examples: R, Python, JavaScript
  • Compiled Language:
    • Code is translated into machine language by a compiler before execution
    • Must be run outside of the script code
    • Typically (a lot) faster
    • Examples: C++, Rust

The R & Python Language

  • Easy and intuitive to learn

    • Beginner friendly for people with no programming background
  • State-of-art visualizations

  • Robust machine learning packages

Comparison

R

  • Robust quant-finance, statistics packages
  • R: Functional with OOP support
  • Modern R: even simpler and easier syntax

Python

  • Extensive deep / reinforcement learning
  • Python: OOP with functional support

Fast in-memory databases

duckDB / polars (R & Python)

Fast and Robust Quant/statistical packages (R)

Excellent syntax integration (R)

Write once, run everywhere: dplyr syntax that can be used in:

  • arrow for fast out-of-core data

  • dbplyr for databases (duckdb, SQLite, etc.)

  • sparklyr for spark integration

  • and others (dtplyr, tidypolars)

Extensive libraries for Deep learning (Python)

General purpose (Python)

  • Software Engineering
  • Web developing, application development
  • Broad API support